#ifndef __ATL_KRNL_PMM__
#define __ATL_KRNL_PMM__
#include <cstdint.h>
#include <string.h>
#define PMM_BLOCK_SIZE 4096
typedef uint32_t physical_addr;

uint32_t pmm_get_free_block_count();
uint32_t pmm_get_size();
void pmm_init (size_t memSize, physical_addr bitmap);

void pmm_init_region (physical_addr base, size_t size);
void pmm_deinit_region (physical_addr base, size_t size);

void* pmm_alloc_block();
void  pmm_free_block (void* p);

void* pmm_alloc_blocks(size_t size);
void  pmm_free_blocks(void* p, size_t size);

#endif